/*
FileReader 和 FileWriter是文件字符流，适合操作字符类型的纯文本文件
有FileReader和FileWriter两个类
支持skip方法，跳过1个英文字符或中文字符
 */
package javaio.FileReaderWriter;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try(FileReader reader = new FileReader("test.txt");  //定义一个文件读取流对象
            FileWriter writer = new FileWriter("output.txt")){  //定义一个文件写入流对象
            reader.skip(1); //跳过一个字符，无论是1个中文字符还是1个英文字符
            System.out.println((char) reader.read());  //读取一个字符

            //同时，字符流只支持char[]类型数组作为存储
            char[] chars = new char[10]; //reader对象没有available()方法，只能设置固定长度
            reader.read(chars);  //除了read()方法，还支持read(char),把字符流读入到char[]数组里
            //读入到数组后，打印数组时，如果长度不够，以多个\u0000补充显示，打印出来的效果是框框对角线一个斜杠
            System.out.println(chars);

            //有FileReader肯定也有Writer
            System.out.println(writer.getEncoding());  //获取文本文件的编码格式
            writer.write('勇');  //写入文件，如果文件不为空则覆盖内容
            writer.write('敢');  //对于同一个FileWriter对象，在同一段代码里，不存在覆盖问题，是追加的
            writer.append('牛'); //不希望覆盖其他Writer对象的操作文件的已有内容，则使用append。
            //append 返回Writer对象自己，可以链式调用
            writer.append('牛')
                            .append('不')
                            .append('怕')
                            .append("苦难");

            writer.flush();  //最后刷新一下，强制写入

        }catch (IOException e){
            e.printStackTrace();
        }
    }
}
